#ifndef MYFFT_HPP
#define MYFFT_HPP
#include <fftw3.h>
#include <queue>
#include <complex>
#include <mutex>
// @ according fftw directory wrap function

class myfft
{
private:
    // @ FFT size
    std::size_t data_len;
    // @ input data
    fftw_complex *fftw_input;
    // @ output data
    fftw_complex *fftw_output;
    // @ task
    fftw_plan plan;
    // @ flag
    bool flag;

public:
    // @ build and init
    myfft(std::size_t size, bool flag);
    // @ destroy
    ~myfft();
    // @ input data and execute task
    void exec_fft(std::complex<double> *queue_input, std::size_t data_size);
    // @ output result
    short *get_result();
};

#endif